<!--富文本编译器 https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8-->

<template>
   <div style="border: 1px solid #ccc;">
        <Toolbar
            style="border-bottom: 1px solid #ccc"
            :editor="editor"
            :defaultConfig="toolbarConfig"
            :mode="mode"
        />
        <Editor
            style="height: 200px; overflow-y: hidden;"
            v-model="html"
            :defaultConfig="editorConfig"
            @onChange="onChange"
            :mode="mode"
            @onCreated="onCreated"
        />
    </div>
</template>

<script>
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
export default {
    components: { Editor, Toolbar },
    props:['WangEditorData'],
    //监控父组件回传的数据WangEditorData发生改变时及就是在编辑时才会发生改变，注意这里需要等待WangEditor组件加载完成才能去操作html，否则赋值失败
    watch:{
      WangEditorData(newValue,oldVal){
        console.log("WangEditorData的数据只有在编辑的时候发生改变",newValue,oldVal)
        this.$nextTick(()=>{
          this.html = newValue
        }
        )
      }
    },
    data() {
      return {
        editor: null,
        html: '',
        toolbarConfig: {},  //工具栏配置
        editorConfig: { placeholder: '请输入内容...' }, //编辑器配置
        mode: 'default', // or 'simple'
      }
    },
    methods: {
      onChange(editor){
        console.log(editor)
        console.log(this.html)
        this.$emit("sendWangEditor",this.html)
      },
      onCreated(editor) {
        this.editor = Object.seal(editor) // 一定要用 Object.seal() ，否则会报错
      },
      // 清空编辑器内容
      clearEditor(){
        console.log("wangEditor的自定义的清空方法被调用了.......")
        this.html = '' // 清空内容
      }
    },
    // mounted() {
    //   // 模拟 ajax 请求，异步渲染编辑器
    //   setTimeout(() => {
    //     this.html = '<p>模拟 Ajax 异步设置内容 HTML</p>'
    //   }, 1500)
    // },
    beforeDestroy() {
      const editor = this.editor
      if (editor == null) return
      editor.destroy() // 组件销毁时，及时销毁编辑器
    },
}
</script>
<style src="@wangeditor/editor/dist/css/style.css"></style>
<style>

</style>